package com.zhike.service.user;

import com.zhike.common.dto.R;
import com.zhike.common.dto.UserRosterVO;
import com.zhike.common.dto.UserOtherInfoDTO;
import com.zhike.common.dto.UserPasswdDTO;
import com.zhike.common.dto.UserPersonalSignatureDTO;
import com.zhike.common.dto.UserUpdateDTO;
import com.zhike.common.vo.UserFriendCountVO;
import com.zhike.common.vo.UserInfoVO;

public interface IUserService {

  /**
   * 根据手机号查询用户信息
   * 
   * @param searchText 手机号或账号 要查询的用户的手机号
   * @return
   */
  public UserRosterVO queryUserInfo(String searchText);

  /**
   * 查询指定uid用户的邮件地址
   *
   * @param uid uid
   * @return mail
   */
  String queryUserMailByUid(String uid);

  /**
   * 查询指定人员的好友数量情况
   *
   * @param uid uid
   * @return 结果
   */
  UserFriendCountVO queryUserFriendCount(String uid);

  /**
   * 重置所有用户在线状态
   *
   * @return 结果
   */
  void updateOnlineStatusAll();

  /**
   * 根据虚拟用户ID查询用户信息
   * 
   * @param fakeId
   * @return
   */
  UserInfoVO getUserByUserId(String fakeId);

  /**
   * 修改在线状态
   *
   * @param isOnline  是否在线
   * @param isMail    是否邮箱
   * @param uidOrMail uid or mail
   * @return 结果
   */
  Boolean updateOnlineStatus(Boolean isOnline, Boolean isMail, String uidOrMail, String osType);

  /**
   * 修改用户
   * 
   * @param dto
   * @return
   */
  R<Boolean> userUpdate(String uid, UserUpdateDTO dto);

  /**
   * 修改密码
   * 
   * @param dto
   * @return
   */
  R<Boolean> userUpdatePasswd(UserPasswdDTO dto);

  /**
   * 更新用户签名
   * 
   * @param dfc
   * @param ip
   * @return
   */
  R<Boolean> userUpdatePersonalSignature(String uid, UserPersonalSignatureDTO dto);

  /**
   * 更新用户其他信息
   * 
   * @param dto
   * @return
   */
  R<Boolean> userUpdateOtherInfo(String uid, UserOtherInfoDTO dto);

  /**
   * 允许搜索我的方式
   * 
   * @param uid
   * @param action
   * @return
   */
  Boolean updateUserSwitch(String uid, String way, Integer action);
}
